#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define double long long

const int N=4e5+5;

struct point{
	int x[2],w;
}p[N];

struct node{
	int ls,rs,sum,sz;
	double mn[2],mx[2];
	point tp;
}tr[N];

int last,n,rt,D,top,cur,rub[N],op,nx;
double ans=4e18;

int newnode(){
	if(top)return rub[top--];
	else return ++cur;
}

bool cmp(const point& a,const point& b){
	return a.x[D]<b.x[D];
}

void up(int k){
	int l=tr[k].ls,r=tr[k].rs;
	for(int i=0;i<=1;i++){
		tr[k].mn[i]=tr[k].mx[i]=tr[k].tp.x[i];
		if(l) tr[k].mn[i]=min(tr[k].mn[i],tr[l].mn[i]);
		if(r) tr[k].mn[i]=min(tr[k].mn[i],tr[r].mn[i]);
		if(l) tr[k].mx[i]=max(tr[k].mx[i],tr[l].mx[i]);
		if(r) tr[k].mx[i]=max(tr[k].mx[i],tr[r].mx[i]);
	}
	tr[k].sum=tr[l].sum+tr[r].sum+tr[k].tp.w;
	tr[k].sz=tr[l].sz+tr[r].sz+1;
}

int build(int l,int r,int d){
	if(l>r) return 0;
	int mid=(l+r)>>1,k=newnode();
	D=d,nth_element(p+l,p+mid,p+r+1,cmp),tr[k].tp=p[mid];
	tr[k].ls=build(l,mid-1,d^1),tr[k].rs=build(mid+1,r,d^1);
	up(k);
	return k;
}

void pia(int k,int num){
	if(tr[k].ls) pia(tr[k].ls,num);
	p[tr[tr[k].ls].sz+num+1]=tr[k].tp,rub[++top]=k;
	if(tr[k].rs) pia(tr[k].rs,num+tr[tr[k].ls].sz+1);
}

void check(int& k,int d){
	if(tr[k].sz*0.75<tr[tr[k].ls].sz||tr[k].sz*0.75<tr[tr[k].rs].sz){
		pia(k,0);
		k=build(1,tr[k].sz,d);
	}
}

void ins(int& k,int d){
	if(!k){
		k=nx;
		return;
	}
	ins(tr[nx].tp.x[d]<=tr[k].tp.x[d]?tr[k].ls:tr[k].rs,d^1);
	up(k);
}

double get(int u){
	if(!u)return 4e18;double s=0;
	for(int i=0;i<=1;i++){
		double x=max(tr[nx].tp.x[i]-tr[u].mx[i],0LL)+max(tr[u].mn[i]-tr[nx].tp.x[i],0LL);
		s+=x*x;
	}
	return s;
}

double dis(int u){
	double s=0;
	for(int i=0;i<2;i++){
		double x=tr[nx].tp.x[i]-tr[u].tp.x[i];
		s+=x*x;
	}
	return s;
}

void query(int u){
	if(!u) return;
	ans=min(ans,dis(u));
	double lv=get(tr[u].ls),rv=get(tr[u].rs);	
	if(lv<rv){
		if(lv<ans)query(tr[u].ls);
		if(rv<ans)query(tr[u].rs);
	}else{
		if(rv<ans)query(tr[u].rs);
		if(lv<ans)query(tr[u].ls);
	}
}

void solve(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>tr[i].tp.x[0]>>tr[i].tp.x[1];
		for(int j=0;j<2;j++){
			tr[i].mn[j]=tr[i].mx[j]=tr[i].tp.x[j];
		}
	}
	check(rt,0);
	for(nx=1;nx<=n;nx++){
		query(rt);
		ins(rt,0);
	}
	cout<<ans;
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int t=1;
    // cin>>t;
    while(t--){
        solve();
    }
    return 0;
}
